#!/bin/bash

# 设置输出文件名（使用时间戳来命名）
output_file="system_info_$(date +%Y%m%d_%H%M%S).txt"

# 将所有输出重定向到文件
{
    echo "================系统配置信息=================="
    echo "生成时间: $(date '+%Y-%m-%d %H:%M:%S')"
    echo

    # 1&2. 主板信息
    echo "---主板信息---"
    if [ -f /sys/class/dmi/id/board_name ]; then
        echo "主板型号: $(cat /sys/class/dmi/id/board_name)"
    fi
    if [ -f /sys/class/dmi/id/board_vendor ]; then
        echo "主板厂商: $(cat /sys/class/dmi/id/board_vendor)"
    fi
    echo

    # 3&4. 网络信息
    echo "---网络信息---"
    # 获取物理网卡列表
    physical_interfaces=$(ls -l /sys/class/net/ | grep -v virtual | grep devices | awk -F"/" '{print $NF}')
    
    echo "IP地址:"
    for interface in $physical_interfaces; do
        ip_addr=$(ip -4 addr show $interface 2>/dev/null | grep inet | awk '{print $2}')
        if [ ! -z "$ip_addr" ]; then
            echo "接口: $interface  IP: $ip_addr"
        fi
    done

    echo -e "\nMAC地址:"
    for interface in $physical_interfaces; do
        mac=$(ip link show $interface | grep 'link/ether' | awk '{print $2}')
        if [ ! -z "$mac" ]; then
            echo "接口: $interface  MAC: $mac"
        fi
    done
    echo

    # 5. 系统版本
    echo "---系统信息---"
    echo "系统版本: $(lsb_release -d | cut -f2)"
    echo "内核版本: $(uname -r)"
    echo

    # 6&7. 硬盘信息
    echo "---硬盘信息---"
    lsblk -d -o NAME,SIZE,SERIAL,MODEL | grep -v "loop"
    echo

    # 8. CPU信息
    echo "---CPU信息---"
    cpu_info=$(cat /proc/cpuinfo | grep "model name" | head -n 1 | cut -d ":" -f2)
    cpu_cores=$(nproc)
    echo "CPU型号:$cpu_info"
    echo "CPU核心数: $cpu_cores"
    echo

    # 9&10. 内存信息
    echo "---内存信息---"
    echo "内存详细信息:"
    if command -v dmidecode >/dev/null 2>&1; then
        sudo dmidecode -t memory | grep -E "Size:|Type:|Speed:|Manufacturer:|Serial Number:" | grep -v "No Module Installed"
    else
        echo "请安装 dmidecode: sudo apt-get install dmidecode"
    fi
    echo
    echo "总内存容量: $(free -h | grep "Mem:" | awk '{print $2}')"
    echo

    echo "==================完成======================="
} > "$output_file"

# 同时在屏幕上显示结果
cat "$output_file"

echo -e "\n系统信息已保存到文件: $output_file" 